3048 LOCATE 7+MR,MC+5:XX1=VAL(X$(M)):XX2=LEN(X$(M)):IF XX2<10 THEN P1$=LEFT$(DUMMY$,10-XX2)+X$(M) ELSE IF XX2>10 THEN P1$=RIGHT$(X$(M),10) ELSE P1$=LEFT$(X$(M),10)
3049 PRINT P1$;:LOCATE 7+MR,MC+16:YY1=VAL(Y$(M)):YY2=LEN(Y$(M)):IF YY2<10 THEN P2$=LEFT$(DUMMY$,10-YY2)+Y$(M) ELSE IF YY2>10 THEN P2$=RIGHT$(Y$(M),10) ELSE P2$=LEFT$(Y$(M),10)
3050 PRINT P2$:MR=MR+1
3052 IF M MOD 14=0 THEN MR=1:MC=MC+26
3053 IF M MOD 42=0 THEN MR=1:MC=1:GOSUB 64000
3054 IF LEFT$(X$(M),1)="S" OR LEFT$(X$(M),1)="s" OR LEFT$(Y$(M),1)="S" OR LEFT$(Y$(M),1)="s" THEN GOTO 3100
3075 IF LP=1 THEN LPRINT"X( ";J;" )= ";X$(J);TAB(40);"Y( ";J;" )= ";Y$(J)
3077 M=M+1:IF MR>14 THEN MR=1:MC=MC+26:IF MC>55 THEN MC=1
3078 IF MR2=1 THEN 3037
3080 NEXT J
3090 GOTO 120
3100 X$(M)="END":Y$(M)="END":LOCATE 25,1:PRINT"(S)top encountered. More Data (Y or N).";:INPUT;A$
3110 IF A$ = "Y" OR A$ = "y" THEN MR=MR-1:LOCATE 25,1:PRINT" ";:GOTO 3040
3120 GOTO 3430
3430 CLS:PRINT "Rearranging Data for Deletions"
3470 K1=1
3480 FOR I= 1 TO 100
3490 X1$(I)=X$(I): Y1$(I)=Y$(I): NEXT I
3540 FOR I= 1 TO 100
3545 IF X1$(I)="DEL" OR Y1$(I)="DEL" THEN 3580
3550 IF X1$(I)<>"DEL" THEN GOSUB 3587
3570 IF X1$(I)="END" THEN X$(K1)="END":Y$(K1)="END": GOTO 3582
3580 NEXT I
3582 FOR I= 1 TO 100: IF X$(I)="END" OR LEFT$(X$(I),1)="S" OR LEFT$(X$(I),1)="s" GOTO 3584
3583 NEXT I
3584 IF QZ=1 THEN RETURN ELSE PRINT "There are now "; I-1;" VALID data points. ":FOR I=1 TO 500:NEXT I:GOTO 3590
4000 CLS:GOSUB 38000: PRINT "CALCULATING SUMS AND SUMS OF SQUARES"
4010 QA=0
4020 GOTO 20000
4040 CLS:GOSUB 38000:IF X$(1)="END" OR Y$(1)="END" THEN PRINT "NO DATA ENTERED, CAN'T SHOW COEFFICIENTS!": PRINT CHR$(7): FOR I=1 TO 1000: NEXT I: GOTO 120
4522 LOCATE 23,7:GOSUB 4700:PRINT USING C2$;A(MQ);:LOCATE 23,20:GOSUB 4705:PRINT USING C2$;B(MQ);:LOCATE 23,33:GOSUB 4710:PRINT USING C2$;C(MQ);:LOCATE 23,46:PRINT USING C1$;RR(MQ);:LOCATE 23,53:PRINT USING C1$;RC(MQ);:LOCATE 23,60:PRINT EQ$(MQ);
4524 MR=6:
4526 FOR I=1 TO 16
4528 LOCATE MR,2:PRINT USING C3$;I;:LOCATE MR,7:GOSUB 4715:PRINT USING C2$;A(I):LOCATE MR,20:GOSUB 4720:PRINT USING C2$;B(I)::LOCATE MR,33:GOSUB 4725:PRINT USING C2$;C(I);
4529 LOCATE MR,46:PRINT USING C1$;RR(I);:LOCATE MR,53:PRINT USING C1$;RC(I);:LOCATE MR,60:PRINT EQ$(I);
4530 MR=MR+1
4531 NEXT I
4532 LOCATE 25,1:INPUT;"PLEASE PRESS <ENTER> TO SEE THE REMAINING EQUATION COEFFICIENTS ";AA$:LOCATE 25,1:PRINT STRING$(78," ");
4544 LOCATE MR,2:PRINT USING C3$;I;:LOCATE MR,7:GOSUB 4730:PRINT USING C2$;A(I);:LOCATE MR,20:GOSUB 4735:PRINT USING C2$;B(I);:LOCATE MR,33:GOSUB 4740:PRINT USING C2$;C(I);:LOCATE MR,46:PRINT USING C1$;RR(I);
4545 LOCATE MR,53:PRINT USING C1$;RC(I);:LOCATE MR,60:PRINT EQ$(I);
4546 MR=MR+1:NEXT I
4548 LOCATE 25,1:INPUT;"ALL EQUATIONS HAVE BEEN LISTED. PRESS <ENTER> TO RETURN TO MAIN MENU ";AAA$
4550 IF LP=1 THEN 4574 ELSE 120
4574 LPRINT A5$:FOR I=1 TO 25
4575 IF A(I)=0 AND B(I)=0 THEN 4578
4576 IF LP=1 THEN LPRINT USING A1$;I;:LPRINT" ";:LPRINT USING A2$;A(I);:LPRINT" ";:LPRINT USING A2$;B(I);:LPRINT" ";:LPRINT USING A2$;C(I);:LPRINT" ";:LPRINT USING A3$;RR(I);:LPRINT USING A0$;RC(I);:LPRINT" ";:LPRINT EQ$(I)
4578 NEXT I
4605 IF LP=1 THEN LPRINT"BASED ON THE VALUE OF RC( )--BEST FITTING CURVE WAS NUMBER";MQ
4610 LOCATE 25,1:INPUT "PRESS <ENTER> to return to MAIN MENU ";A$:CLS:GOSUB 38000
4620 IF LP=1 THEN LPRINT CHR$(12)
4630 GOTO 120
4700 IF A(MQ)>9999999.9999# OR A(MQ)<-999999.9999# OR ABS(A(MQ))<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4701 IF A(MQ)=0 THEN C2$="#######.####"
4702 RETURN
4705 IF B(MQ)>9999999.9999# OR B(MQ)<-999999.9999# OR ABS(B(MQ))<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4706 IF B(MQ)=0 THEN C2$="#######.####"
4707 RETURN
4710 IF C(MQ)>9999999.9999# OR C(MQ)<-999999.9999# OR ABS(C(MQ))<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4711 IF C(MQ)=0 THEN C2$="#######.####"
4712 RETURN
4715 IF A(I)>9999999.9999# OR A(I)<-999999.9999# OR ABS(A(I))<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4716 IF A(I)=0 THEN C2$="#######.####"
4717 RETURN
4720 IF B(I)>9999999.9999# OR B(I)<-999999.9999# OR ABS(B(I))<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4721 IF B(I)=0 THEN C2$="#######.####"
4722 RETURN
4725 IF C(I)>9999999.9999# OR C(I)<-999999.9999# OR ABS(C(I))<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4726 IF C(I)=0 THEN C2$="#######.####"
4727 RETURN
4730 IF A(I)>9999999.9999# OR A(I)<-999999.9999# OR ABS(A(I))<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4731 IF A(I)=0 THEN C2$="#######.####"
4732 RETURN
4735 IF B(I)>9999999.9999# OR B(I)<-999999.9999# OR ABS(B(I))<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4736 IF B(I)=0 THEN C2$="#######.####"
4737 RETURN
4740 IF C(I)>9999999.9999# OR C(I)<-999999.9999# OR ABS(C(I))<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4741 IF C(I)=0 THEN C2$="#######.####"
4742 RETURN
4745 IF A(I)>99999999.9999# OR A(I)<-9999999.9999# OR ABS(A(I))<.0001 THEN C2$="##.######^^^^" ELSE C2$="########.####"
4746 IF A(I)=0 THEN C2$="#######.####"
4747 RETURN
4750 IF B(I)>99999999.9999# OR B(I)<-9999999.9999# OR ABS(B(I))<.0001 THEN C2$="##.######^^^^" ELSE C2$="########.####"
4751 IF B(I)=0 THEN C2$="#######.####"
4752 RETURN
4755 IF C(I)>99999999.9999# OR C(I)<-9999999.9999# OR ABS(C(I))<.0001 THEN C2$="##.######^^^^" ELSE C2$="########.####"
4756 IF C(I)=0 THEN C2$="#######.####"
4757 RETURN
4760 IF Y>9999999.9999# OR Y<-999999.9999# OR ABS(Y)<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4761 IF Y=0 THEN C2$="#######.####"
4762 RETURN
4770 IF START >9999999.9999# OR START<-999999.9999# OR ABS(START)<.0001 THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
4771 IF START=0 THEN C2$="#######.####"
4772 RETURN
4780 IF XX1>9999999.99# OR XX1<-999999.99# OR ABS(XX1)<.0001 THEN C5$="##.###^^^^" ELSE C5$="#######.##"
4781 IF XX1>-9999.9999# AND XX1<99999.9999# THEN C5$="#####.####"
4782 IF XX1=0 THEN C2$="#######.####"
4783 RETURN
4790 IF YY1>9999999.99# OR YY1<-999999.99# OR ABS(YY1)<.0001 THEN C5$="##.###^^^^" ELSE C5$="#######.##"
4791 IF YY1>-9999.9999# AND YY1<99999.9999# THEN C5$="#####.####"
4792 IF YY1=0 THEN C2$="#######.####"
4793 RETURN
4990 CLS:GOSUB 38000:AZ$=""
5000 K=0:L=0:IF AZ$="S" THEN INPUT "All data entered, press <Enter> to continue";A$
5002 AZ$="":Q1$="":Q1A$="":PF$="":PF1$="":CLS:GOSUB 38000:PRINT"Predicted Value of X, Given Value for Y. ":K=1
5003 CLOSE:LOCATE 25,1:INPUT "Quit and return to main menu or Predict (Q or P)";AZ$:CLS:GOSUB 38000
5004 CLS:GOSUB 38000:IF L=1 AND LP=1 THEN LPRINT CHR$(12)
5005 IF LEFT$(AZ$,1)="q" OR LEFT$(AZ$,1)="Q" THEN 120
5006 INPUT "Output results to printer (Y or N) ";Q1$:INPUT "Output Predictions to a File (Y) or (N) ";Q1A$:IF LEFT$(Q1A$,1)="Y" OR LEFT$(Q1A$,1)="y" THEN GOTO 57000
5033 LOCATE 2,34:PRINT" ";:LOCATE 2,34:PRINT EQ;:IF EQ<0 OR EQ>25 THEN 5038 ELSE IF A(EQ)=0 AND B(EQ)=0 THEN 5043 ELSE LOCATE 2,42:PRINT " ";:LOCATE 2,42:PRINT EQ$(EQ);
15102 IF RR(I)<0 OR RR(I)>1 THEN A(I)=0:B(I)=0:RC(I)=0:C(I)=0:RR(I)=0
15103 IF RC(I)<0 OR RC(I)>1 THEN RC(I)=0
15104 NEXT I
15105 GOTO 6200
15106 GOTO 4040
20000 REM * CALCULATE SUMS AND SUMS OF SQUARES *
20010 NX=0:NY=0
20040 FOR I=16 TO 65: R(I)=0: NEXT I
20041 Q9=0:QA=1:GOTO 3430
20045 FOR I=1 TO 100
20046 CLS:GOSUB 38000:PRINT"PROCESSING DATA POINT # "; I
20047 IF X$(1)="END" OR Y$(1)="END" THEN PRINT "NO DATA HAS BEEN ENTERED":PRINT"RETURNING TO MAIN MENU":FOR I1=1 TO 1000:NEXT I1:GOTO 120
20055 IF X$(I)= "END" OR Y$(I)="END" OR X$(I)="DEL" OR Y$(I)="DEL" GOTO 30000
20060 X(I)=CDBL(VAL(X$(I))):Y(I)=CDBL(VAL(Y$(I)))
20065 IF X(I)<0 THEN NX=1
20066 IF Y(I)<0 THEN NY=1
20067 IF X(I)=0 THEN X(I)=.0001
20068 IF Y(I)=0 THEN Y(I)=.0001
20070 R(16)=R(16)+X(I)
20080 R(17)=R(17)+X(I)*X(I)
20090 R(18)=R(18)+Y(I)
20100 R(19)=R(19)+Y(I)*Y(I)
20110 R(20)=R(20)+X(I)*Y(I)
20120 R(21)=I
20130 R(22)=R(22)+(1/X(I))
20140 R(23)=R(23)+(1/(X(I)*X(I)))
20150 R(24)=R(24)+(1/(Y(I)))
20160 R(25)=R(25)+(1/(Y(I)*Y(I)))
20170 R(26)=R(26)+(1/(Y(I)*X(I)))
20180 R(27)=I
20190 IF NX<>1 THEN R(28)=R(28)+LOG(X(I))
20200 IF NX<>1 THEN R(29)=R(29)+(LOG(X(I)))*(LOG(X(I)))
20210 IF NY <>1 THEN R(30)=R(30)+(LOG(Y(I)))
20220 IF NY<>1 THEN R(31)=R(31)+(LOG(Y(I)))*(LOG(Y(I)))
20230 IF NX<>1 AND NY<>1 THEN R(32)=R(32)+(LOG(X(I)))*(LOG(Y(I)))
20240 R(33)=I
20250 R(34)=R(34)+(X(I)/Y(I))
20260 R(35)=R(35)+(Y(I)/X(I))
20270 R(36)=R(36)+((X(I)*X(I)))*Y(I)
20280 R(37)=R(37)+((X(I)*X(I)))/Y(I)
20290 R(38)=R(38)+(Y(I)/(X(I)*X(I)))
20300 R(39)=R(39)+X(I)*(Y(I)*Y(I))
20310 R(40)=R(40)+(X(I)*X(I)*X(I))
20320 R(41)=R(41)+1/((X(I)*X(I)*X(I)))
20330 R(42)=R(42)+(Y(I)*Y(I)*Y(I))
20340 R(43)=R(43)+(X(I)*X(I)*X(I)*X(I))
20350 R(44)=R(44)+1/((X(I)*X(I)*X(I)*X(I)))
20360 IF NX<>1 THEN R(45)=R(45)+LOG(X(I))/X(I)
20370 IF NY<>1 THEN R(46)=R(46)+X(I)*LOG(Y(I))
20380 IF NY<>1 THEN R(47)=R(47)+LOG(Y(I))/X(I)
20390 IF NX<>1 THEN R(48)=R(48)+X(I)*LOG(X(I))
20400 IF NX<>1 THEN R(49)=R(49)+(X(I)*LOG(X(I)))*(X(I)*LOG(X(I)))
20410 IF NX<>1 AND NY<>1 THEN R(50)=R(50)+X(I)*LOG(X(I))*LOG(Y(I))
20420 IF NX<>1 THEN R(51)=R(51)+Y(I)*LOG(X(I))
20430 IF NX<>1 THEN R(52)=R(52)+LOG(X(I))/Y(I)
20440 IF NX<>1 THEN R(53)=R(53)+((LOG(X(I))/X(I)))*((LOG(X(I))/X(I)))
20450 IF NY<>1 THEN R(54)=R(54)+(X(I)*X(I))*LOG(Y(I))
20460 IF NX<>1 THEN R(55)=R(55)+((LOG(X(I))*LOG(X(I))*LOG(X(I))))
20470 IF NX<>1 THEN R(56)=R(56)+((LOG(X(I))*LOG(X(I))*LOG(X(I))*LOG(X(I))))
20480 IF NX<>1 AND NY<>1 THEN R(57)=R(57)+((LOG(X(I))*LOG(X(I))))*LOG(Y(I))
20490 IF NX<>1 AND NY<>1 THEN R(58)=R(58)+(LOG(Y(I))*LOG(X(I)))/X(I)
20500 IF X(I)>=1 THEN Q9=1: GOTO 20540
20501 IF Q9=1 GOTO 20540
20502 IF X(I)<=0 THEN 20550
20505 R(59)=R(59)+LOG(1-X(I))
20510 R(60)=R(60)+(LOG(1-X(I)))*(LOG(1-X(I)))
20520 R(61)=R(61)+LOG(X(I))*LOG(1-X(I))
20530 IF NY<>1 THEN R(62)=R(62)+LOG(Y(I))*LOG(1-X(I))
20540 IF NX<>1 THEN R(63)=R(63)+(LOG(X(I)))/X(I)
20550 NEXT I
20600 NX=0:NY=0
30000 REM * END OF SUMMATION LOOP *
30030 CLS:GOSUB 38000: PRINT"SUMS HAVE BEEN CALCULATED--NOW CALCULATING COEFFICIENTS": GOTO 12000
36000 CLS:REM This routine selects Color or Monochrome Monitor
36005 PRINT TAB(27);"CURVE_AV Version 2.20-A":PRINT" "
36010 PRINT"This routine allows the selection of Color or Monochrome monitors."
36020 PRINT" ":PRINT"For most cases, the COLOR choice will be correct. This choice will work with"
36030 PRINT"CGA, EGA, and Hercules compatible cards. Select the MONOCHROME version"
36040 PRINT"only if the COLOR choice does not work."
36045 PRINT"MONOCHROME should work with ANY monitor. With a color monitor, the"
36046 PRINT"choice of MONOCHROME will yield white text on a black background.":PRINT" "
36047 PRINT" ":PRINT"When COLOR choice is used for MONOCHROME monitor, display is HIGH INTENSITY."
36048 PRINT"To use low intensity on MONOCHROME monitor, choose MONOCHROME monitor."
36050 PRINT" ":PRINT "Please press <C> or <ENTER> for COLOR. Press <M> for MONOCHROME. "
36060 PRINT" ":MONITOR$="C"
36061 MONITOR1$=INKEY$:IF MONITOR1$="m" OR MONITOR1$="M" OR MONITOR1$="C" OR MONITOR1$="c" OR MONITOR1$=CHR$(13) THEN 36110 ELSE 36061
36110 IF MONITOR1$="C" OR MONITOR1$="c" OR MONITOR1$=CHR$(13) THEN PRINT"You have chosen COLOR monitor":PRINT" ":MONITOR$="C":INPUT"Press <Enter> to Continue";CT$:IF MONITOR2$="Y" THEN MONITOR2$="N":GOTO 10
36115 IF MONITOR1$="C" OR MONITOR1$="C" OR MONITOR1$=CHR$(13) THEN 115
36120 IF MONITOR1$="M" OR MONITOR1$="m" THEN PRINT"You have chosen MONOCHROME monitor":PRINT" ":MONITOR$="M":INPUT"Press <Enter> to Continue";CT$:IF MONITOR2$="Y" THEN MONITOR2$="N":GOTO 10
42000 CLS:GOSUB 38000:IF A(1)=0 AND B(1)=0 THEN PRINT"COEFFICIENTS MUST BE CALCULATED BEFORE USING THIS ROUTINE!":PRINT" ":INPUT"PLEASE PRESS <ENTER> TO RETURN TO MAIN MENU";RMM$:GOTO 120
42010 FOR I=1 TO 25:RS$(I)=STR$(RC(I))+"_"+STR$(I):NEXT I
42015 REM SHELL-METZNER SORT
42020 MAX=25
42025 M1=MAX
42030 M1=M1\2:IF M1=0 THEN 43000
42040 K1=MAX-M1:J1=1
42050 I1=J1
42060 L1=I1+M1
42070 IF RS$(I1)<=RS$(L1) THEN J1=J1+1:IF J1>K1 THEN 42030 ELSE 42050 ELSE 42080
42080 SWAP RS$(I1),RS$(L1):I1=I1-M1:IF I1>0 THEN 42060
42090 J1=J1+1:IF J1>K1 THEN 42030 ELSE 42050
43000 '
43310 '
43320 K2=25:FOR I=1 TO 25:RS1$(I)=RS$(K2):K2=K2-1:NEXT I
43330 FOR I=1 TO 25:RS$(I)=RS1$(I):NEXT I
43340 FOR I=1 TO 25:P1=INSTR(RS$(I),"_"):RS(I)=VAL(MID$(RS$(I),P1+2,LEN(RS$(I)))):NEXT I
43528 LOCATE MR,2:PRINT USING C3$;RS(I);:LOCATE MR,7:GOSUB 43715:PRINT USING C2$;A(RS(I)):LOCATE MR,20:GOSUB 43720:PRINT USING C2$;B(RS(I));:LOCATE MR,33:GOSUB 43725:PRINT USING C2$;C(RS(I));
43529 LOCATE MR,46:PRINT USING C1$;RR(rs(I));:LOCATE MR,53:PRINT USING C1$;RC(RS(I));:LOCATE MR,60:PRINT USING C4$;MSD(RS(I));
43530 MR=MR+1:IF MR=24 THEN 43532
43531 NEXT I
43532 LOCATE 25,1:INPUT"PLEASE PRESS <ENTER> TO RETURN TO MAIN MENU";RMM$:GOTO 120
43715 IF A(RS(I))>9999999.9999# OR A(RS(I))<-999999.9999# THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
43717 RETURN
43720 IF B(RS(I))>9999999.9999# OR B(RS(I))<-999999.9999# THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
43722 RETURN
43725 IF C(RS(I))>9999999.9999# OR C(RS(I))<-999999.9999# THEN C2$="##.#####^^^^" ELSE C2$="#######.####"
43727 RETURN
50000 IF LEFT$(Q1$,1)="Y" OR LEFT$(Q1$,1)="y" THEN LP=1 ELSE LP=0